package com.probox.order.api.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.probox.common.core.annotation.Excel;
import com.probox.common.core.enums.ComplaintTypeEnum;
import com.probox.common.core.enums.ProcessStatusEnum;
import com.probox.common.core.utils.StringUtils;
import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import java.io.Serializable;
import java.util.Date;

@Data
@ApiModel(description="客户投诉")
public class OrderComplaintVo implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "投诉ID")
    private Long complaintId;
    /** 平台ID */
    @Excel(name = "平台ID")
    @ApiModelProperty(value = "平台ID(平台ID)")
    private Long platformUid;

    /** 订单ID */
    @Excel(name = "订单ID")
    @ApiModelProperty(value = "订单ID(订单ID)")
    private Long orderUid;

    /** 订单编号 */
    @Excel(name = "订单编号")
    @ApiModelProperty(value = "订单编号(订单编号)")
    private String orderNo;

    /** 投诉类型，logistics物流服务/attitude服务态度/quality商品质量 */
    @Excel(name = "投诉类型，logistics物流服务/attitude服务态度/quality商品质量")
    @ApiModelProperty(value = "投诉类型，logistics物流服务/attitude服务态度/quality商品质量(投诉类型，logistics物流服务/attitude服务态度/quality商品质量)")
    private String complaintType;

    /** 投诉标题 */
    @Excel(name = "投诉标题")
    @ApiModelProperty(value = "投诉标题(投诉标题)")
    private String complaintTitle;

    /** 具体内容 */
    @Excel(name = "具体内容")
    @ApiModelProperty(value = "具体内容(具体内容)")
    private String complaintContent;

    /** 投诉图片 */
    @Excel(name = "投诉图片")
    @ApiModelProperty(value = "投诉图片(投诉图片)")
    private String complaintImage;

    /** 客户ID */
    @Excel(name = "客户ID")
    @ApiModelProperty(value = "客户ID(客户ID)")
    private Long customerUid;

    /** 客户名称 */
    @Excel(name = "客户名称")
    @ApiModelProperty(value = "客户名称(客户名称)")
    private String customerName;

    /** 投诉时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "投诉时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "投诉时间(投诉时间)")
    private Date createDate;

    /** 数据状态 0无效，1有效 */
    @Excel(name = "数据状态 0无效，1有效")
    @ApiModelProperty(value = "数据状态 0无效，1有效(数据状态 0无效，1有效)")
    private String dataStatus;

    /** 处理状态 -1处理失败/0未处理/1处理中/2已完成 */
    @Excel(name = "处理状态 -1处理失败/0未处理/1处理中/2已完成")
    @ApiModelProperty(value = "处理状态 -1处理失败/0未处理/1处理中/2已完成(处理状态 -1处理失败/0未处理/1处理中/2已完成)")
    private String processStatus;

    /** 处理人 */
    @Excel(name = "处理人")
    @ApiModelProperty(value = "处理人(处理人)")
    private Long processUser;

    /** 处理人名称 */
    @Excel(name = "处理人名称")
    @ApiModelProperty(value = "处理人名称(处理人名称)")
    private String processUserName;

    /** 处理时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "处理时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "处理时间(处理时间)")
    private Date processDate;

    /** 处理完成时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "处理完成时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "处理完成时间(处理完成时间)")
    private Date finishDate;

    /** 处理意见 */
    @Excel(name = "处理意见")
    @ApiModelProperty(value = "处理意见(处理意见)")
    private String processRemark;

    /** 修改人 */
    @Excel(name = "修改人")
    @ApiModelProperty(value = "修改人(修改人)")
    private Long updateUser;

    /** 修改时间 */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @Excel(name = "修改时间" , width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "修改时间(修改时间)")
    private Date updateDate;

    /** 修改人名称 */
    @Excel(name = "修改人名称")
    @ApiModelProperty(value = "修改人名称(修改人名称)")
    private String updateName;

    public String getComplatinTypeName(){
        return ComplaintTypeEnum.getNameByKey(complaintType);
    }

    public String getProcessStatusName(){
        return ProcessStatusEnum.getNameByKey(processStatus);
    }

    public String getComplaintImageOne(){
        if(StringUtils.isNotEmpty(complaintImage)){
            return complaintImage.split(",")[0];
        }
        return "";
    }

}
